package com.zcxx.exception;

import com.zcxx.common.Result;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.io.IOException;

/**
 * 全局异常处理器类。
 * 该类使用 {@link RestControllerAdvice} 注解，用于捕获和处理应用程序中的各种异常。
 */
@RestControllerAdvice
public class GlobalExceptionHandler {

    /**
     * 处理自定义业务异常 {@link BusinessException}。
     *
     * @param e 捕获到的 {@link BusinessException} 异常实例。
     * @return 包含错误码和错误信息的 {@link Result} 对象。
     */
    @ExceptionHandler(BusinessException.class)
    public Result<String> handleBusinessException(BusinessException e) {
        return Result.error(e.getCode(), e.getMessage());
    }

    @ExceptionHandler(IOException.class)
    public Result<String> handleIOException(IOException ex) {
        return Result.error("IO异常：" + ex.getMessage());
    }
    /**
     * 处理其他未捕获的异常。
     *
     * @param e 捕获到的 {@link Exception} 异常实例。
     * @return 包含固定错误码和错误信息的 {@link Result} 对象。
     */
    @ExceptionHandler(Exception.class)
    public Result<String> handleException(Exception e) {
        return Result.error(500, "系统错误: " + e.getMessage());
    }
}
